<?php
class CQuestion extends \BaseController {
	
		/*
		 * index
		 */
		public function index($partie="") {
			//var_dump($partie);
			//$this->loadView("vHeader");
			$this->loadQuestionAndAnswers();
		}
	

		
		
		//retourne une question avec ces réponses
		public function loadQuestionAndAnswers(){
			$domaine=CDomaine::aleaDomaine(Cmonde::checkMonde());
			$idPartie=$_POST["idpartie"];
			$question=CQuestion::loadQuestion($domaine);
			$reponses=DAO::getAll('Reponse', "idquestion=".$question->getId());
			$return=array("idpartie"=>$idPartie,"question"=>$question,"reponses"=>$reponses);
			$this->loadView("vQuestion",$return);
			echo JsUtils::postAndBindTo(".answer", "click", "/trivia/CQuestion/checkanswer/","{'idpartie':'".$_POST['idpartie']."'}","body");		
		}
		
		
		
		
		public static function loadQuestion($domaine){
			return DAO::getOne('Question', "iddomaine=".$domaine->getId()." ORDER BY RAND() LIMIT 1");
		}
		
		
		
		public function checkanswer($param){
			$idPartie=$_POST["idpartie"];
			$id=str_replace("reponse", "", $param[0]);
			$reponse = DAO::getOne("Reponse", 'id='.$id);
			$domaine = CReponse::ReponseDomaine($reponse);
			CReponse::incScore($reponse, $idPartie, $domaine);
			

		}
		
		public function TroisBonneReponse(){
			$bonneRep = CReponse::loadReponsebonne();
			if($bonneRep->getNbReponse() == "3"){
				$bonneRep->setNbReponse($bonneRep->getNbReponse()+1);
				//choix du domaine
			}
			
		}
		
		public static function PerduChangementJ($idPartie){
			//echo "à votre adversaire";
			$partie = DAO::getOne("Partie",$idPartie);
			if ($partie->getJoueur1()->getId() == $_SESSION["joueur1"]->getId()){
				$partie->setJoueurEnCours($partie->getJoueur2());
				DAO::update($partie);
			}
			else{
				$partie->setJoueurEnCours($partie->getJoueur1());
				DAO::update($partie);
			}
			echo JsUtils::execute("window.location = ' /trivia/CPartie'");
		}
		
		

	
		

		
		/*
		 * affiche la réponse a la question
		 */
		public function afficheReponse($params){
			$id=str_replace("reponse", "", $params[0]);
			$reponse=DAO::getOne("Reponse", $id);
			echo "Vous  avez selectionné : ".$reponse->getlibelle();
			//si réponse est bonne
			if($reponse->getEstBonne()==1){
				echo " Bonne réponse";
				
				var_dump($id);
				
				$this->incNbReponse($id);
			}
			else{
				echo " mauvaise réponse ";
				$joueur=$_SESSION["joueur1"];
				$partie = DAO::getOne("Partie",1);
				$reponsebonne=DAO::getOne("BonneReponse", 1);
				if($reponsebonne==null){
					$reponsebonne = new bonnereponse();
					$reponsebonne->setPartie($partie);
					$reponsebonne->setJoueur($joueur);
					$reponsebonne->setDernierCoup(0);
					$reponsebonne->setNbReponse(0);
					DAO::insert($reponsebonne);
				}
				else{
					$reponsebonne->setDernierCoup(0);
					DAO::update($reponsebonne);	
				}		
				$this->perdu();
				}
		}
		
		
		/*
		 * incrémente le nb de bonne reponse d'affilé
		 */
		public function incNbReponse($reponse){
			$joueur=$_SESSION["joueur1"];
			//var_dump($joueur);
			$partie = DAO::getOne("Partie",1);
			
			$reponsebonne=DAO::getOne("BonneReponse", 1);	
			if($reponsebonne==null){
				$reponsebonne = new bonnereponse();
				$reponsebonne->setPartie($partie);
				$reponsebonne->setJoueur($joueur);
				$reponsebonne->setDernierCoup(1);
				$reponsebonne->setNbReponse(1);
				DAO::insert($reponsebonne);
			}
			else{
				$reponsebonne->setNbReponse($reponsebonne->getNbReponse()+1);
				$reponsebonne->setDernierCoup(1);
				DAO::update($reponsebonne);	
			}		
			if ($reponsebonne->getNbReponse() > 2 AND $reponsebonne->getNbReponse() == 3 ){
				$this->choixDomaine();		
				echo JsUtils::getAndBindTo("#btValider1", "click", "/trivia/CQuestion/afficheQuestion","{ #frmChoix }","body");
			}
			//inutile
			elseif($reponsebonne->getNbReponse() > 2 ) {
				if ($reponsebonne->getDernierCoup() == "1") {
					$reponse = DAO::getOne("Reponse", $reponse);
					$question = $reponse->getQuestion()->getId();
					$domaine = DAO::getOne("Domaine", $question->getDomaine()->getId());
					$domaine = $domaine->getId();
					$partie = $partie->getId();
				
					$this->AjoutCouronne($domaine);
				}
				else{
					echo JsUtils::get("/trivia/CQuestion/refresh","{}","body");
				}
				
			}
			else{
				echo JsUtils::get("/trivia/CQuestion/refresh","{}","body");
			}
				

		}
		
		
		/*
		 * ajout d'une couronne au joueur
		 */
		public function AjoutCouronne($domaine){
			$partie = DAO::getOne("Partie",1);
			$joueur = $_SESSION["joueur1"]->getId();
			$score = new Score();
			$score->setDomaine($domaine);
			$score->setPartie($partie);
			$score->setJoueur($joueur);
			DAO::insert($score);
			$this->refresh();
		}
		
		/*
		 * affiche le nombre de couronne du joueur1
		 */
		public function nbCouronneJ1(){
			$partie = DAO::getOne("Partie",1);
			$joueur = $partie->getJoueur1()->getId();
			$nb=0;
			for ($cpt=0;$score = DAO::getOne("score", array($partie,$joueur,$cpt));$cpt++){
				//if(isset($score->getDomaine())){
					$nb++;
				//}
			}
			return $nb;
		}
		
		
		/*
		 * affiche le nombre de couronne du joueur2
		 */
		public function nbCouronneJ2(){
			$partie = DAO::getOne("Partie",1);
			$joueur = $partie->getJoueur2()->getId();
			$nb=0;
			for ($cpt=0;$score = DAO::getOne("score", array($partie,$joueur,$cpt));$cpt++){
//				if(isset($score->getDomaine())){
	//				$nb++;
		//		}
			}
			return $nb;
		}
		
		
		/*
		 * fin de partie si l'un des joueurs a 
		 * les 6 couronnes
		 */
		public function finPartie(){
			
			$nbCouronne1 = $this->nbCouronneJ1();
			$nbCouronne2 = $this->nbCouronneJ2();
			
			if($nbCouronne1 == "6"){
				echo "Joueur1 Gagne";
			}
			if($nbCouronne2 == "6"){
				echo "Joueur2 Gagne";
			}

		}

	
		
		
		/*
		 * Affichage des domaines + choix
		 */
		public function choixDomaine(){
			$this->loadView("vChoixDomaine","#app");
		}

		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	
		

}